#ifndef TOKEN_H
#define TOKEN_H

#include <string>

// Token types for C-- compiler front-end
enum TokenType {
    KW,            // Keyword
    IDN,           // Identifier
    OP,            // Operator
    SE,            // Separator
    INT_LITERAL,   // Integer literal
    FLOAT_LITERAL, // Floating-point literal
    END            // End of input marker
};

// Token structure representing a lexeme and its classification
struct Token {
    std::string lexeme;    // The exact string from source
    TokenType    type;     // Token category
    std::string  attribute; // Additional attribute (e.g., keyword value or literal text)
};

#endif // TOKEN_H
